<?php
/**
 * @link https://ym2.cleverstone.top
 * @copyright Copyright (c) 2020 Yii Manager Software LLC
 */

namespace builder\tree_table\util\ttthead;

use builder\helper\Str;

/**
 * 工具列选项
 * @author cleverstone
 * @since ym2.0
 */
class Toolbar extends TheadColumnOption
{
    /**
     * @var array
     */
    private $_options = [
        'field' => '__toolbar',    // 列字段
        'title' => '',      // 表格标题
        'width' => null,    // 当前列宽度
        'minWidth' => 60,   // 当前列的最小宽度
        'maxWidth' => 0,    // 当前列的最大宽度
        'style' => '',      // 单元格样式
        'align' => 'left',  // 单元格排列方式
        'fixed' => 'right', // 固定位置,默认:右侧 todo: 该属性不能和lineStyle中的height:auto一起使用,在横向滚动时,布局错乱;请设置为空
    ];

    /**
     * 固定左侧
     * @return $this
     */
    public function fixedLeft()
    {
        $this->_options['fixed'] = 'left';
        return $this;
    }

    /**
     * 不固定位置,跟随文档排版
     * @return $this
     */
    public function fixedNone()
    {
        $this->_options['fixed'] = '';
        return $this;
    }

    /**
     * @param string $title 列标题
     * @return $this
     */
    public function title($title)
    {
        $this->_options['title'] = Str::escapeCRLF((string)$title);
        return $this;
    }

    /**
     * @param string|int $width 单元格宽度, 支持数字和百分比
     * @return $this
     */
    public function width($width)
    {
        $this->_options['width'] = $width;
        return $this;
    }

    /**
     * @param int $minWidth 最小宽度
     * @return $this
     */
    public function minWidth($minWidth)
    {
        $this->_options['minWidth'] = (int)$minWidth;
        return $this;
    }

    /**
     * @param int $maxWidth 最大宽度
     * @return $this
     */
    public function maxWidth($maxWidth)
    {
        $this->_options['maxWidth'] = (int)$maxWidth;
        return $this;
    }

    /**
     * @param array|string $style 单元格样式
     * @return $this
     */
    public function style($style)
    {
        $this->_options['style'] = $style;
        return $this;
    }

    /**
     * 单元格居中排列
     * @return $this
     */
    public function alignCenter()
    {
        $this->_options['align'] = 'center';
        return $this;
    }

    /**
     * 单元格居右排列
     * @return $this
     */
    public function alignRight()
    {
        $this->_options['align'] = 'right';
        return $this;
    }

    /**
     * @return array
     */
    public function _toArray()
    {
        return $this->_options;
    }
}